gdk: Fix toplevel calculation on pointer grab switch
authorCarlos Garnacho <carlosg@gnome.org>
Fri, 31 Jul 2020 16:46:47 +0000 (18:46 +0200)
committerCarlos Garnacho <carlosg@gnome.org>
Fri, 31 Jul 2020 16:53:01 +0000 (18:53 +0200)
This check used to read if (grab || device_type != GDK_DEVICE_TYPE_PHYSICAL),
the grab check was only reserved to physical devices, which the current
pointer device definitely doesn't act like. So the condition was "fixed" the
wrong way around, and the latter check is now moot, so the condition should
really go away. We always want to check the new toplevel under the pointer
here.

Fixes: https://gitlab.gnome.org/GNOME/gtk/-/issues/2970
gdk/gdkdisplay.c

index c24d1216be77788c5849aadbc4f8571037b277a4..c353c9de50a17e28aa645e00dac41bb2a76c65e4 100644 (file)
@@ -639,8 +639,7 @@ switch_to_pointer_grab (GdkDisplay        *display,
       if (grab == NULL /* ungrab */ ||
          (!last_grab->owner_events && grab->owner_events) /* switched to owner_events */ )
        {
-          if (grab)
-            new_toplevel = get_current_toplevel (display, device, &x, &y, &state);
+          new_toplevel = get_current_toplevel (display, device, &x, &y, &state);
 
          if (new_toplevel)
            {